package com.gxc.number;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 题目描述
 * 100个人围成一圈，每个人有一个编码，编号从1开始到100。
 *
 * 他们从1开始依次报数，报到为M的人自动退出圈圈，然后下一个人接着从1开始报数，直到剩余的人数小于M。
 *
 * 请问最后剩余的人在原先的编号为多少？
 *
 * 输入描述
 * 输入一个整数参数 M
 *
 * 输出描述
 * 如果输入参数M小于等于1或者大于等于100，输出“ERROR!”；
 *
 * 否则按照原先的编号从小到大的顺序，以英文逗号分割输出编号字符串
 */
public class Joseph1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        if (n<=1 || n>=100) {
            System.out.println("ERROR!");
            return;
        }

        List<Integer> numList = new ArrayList<>();
        for (int i = 1; i <= 100; i++) {
            numList.add(i);
        }

        //递归报数。计算剩余人
        List<Integer> res = find_last_person(numList, n);

        Collections.sort(res);
        for (int i = 0; i < res.size(); i++) {
            System.out.print(res.get(i));
            if (i != res.size() -1)  System.out.print(",");
        }
    }

    private static List<Integer> find_last_person(List<Integer> numList, int n) {
        for (int i = 0; i < numList.size(); i++) {
            if (i == n-1) {
                List<Integer> remainList = new ArrayList<>(numList.subList(n, numList.size()));
                remainList.addAll(numList.subList(0, n-1));
                return find_last_person(remainList, n);
            }
        }
        return numList;
    }
}
